/**
 * 
 */
package impresor.etiquetas.model;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

import org.hibernate.annotations.ForeignKey;
import org.hibernate.annotations.Type;

/**
 * @author Pablo Moreno
 *
 */
@Entity
@Table(name="TBL_TipoDocumentalClienteItems" , catalog="matrix")
public class Documento implements Serializable{

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "TipDocCliItemsId")
    private long idDocumento;
    
    @ManyToOne
    @JoinColumn(name = "TipDocCliId")
    @ForeignKey(name="FK_TBL_TipoDocumentalClienteItems_TBL_TipoDocumentalCliente")
    private TipoDocumento tipoDocumento;
    
    @Column(name = "CliId")
    private Long idCliente;

    @Column(name = "DepId")
    private Long idDepartamento;

    @Column(name = "AreId")
    private Long idArea;
    
    @ManyToOne
    @JoinColumn(name = "CajId")
    @ForeignKey(name="FK_TBL_TipoDocumentalClienteItems_TBL_Caja")
    private Caja caja;
    
    @ManyToOne
    @JoinColumn(name = "StaId")
    private Estado estado;
    
    @Column(name = "UserLoginId")
    private long idUsuario;
    
    @Column(name = "DateAdded")
    private Date fechaAlta;
    
    @Column(name = "token")
    private String token;
    
    @Column(name = "IsDeleted", columnDefinition = "TINYINT")
    @Type(type = "org.hibernate.type.NumericBooleanType")
    private boolean eliminado;

    /**
     * 
     */
    public Documento(){
	super();
    }
    
    /**
     * @param tipoDocumento
     * @param idCliente
     * @param idDepartamento
     * @param idArea
     * @param caja
     * @param estado
     * @param idUsuario
     */
    public Documento(TipoDocumento tipoDocumento, Long idCliente, Long idDepartamento, Long idArea, Caja caja,
	    Estado estado, long idUsuario) {
	super();
	this.tipoDocumento = tipoDocumento;
	this.idCliente = idCliente;
	this.idDepartamento = idDepartamento;
	this.idArea = idArea;
	this.caja = caja;
	this.estado = estado;
	this.idUsuario = idUsuario;
	this.eliminado = false;
	this.fechaAlta = new Date();
    }

    /**
     * @return the idDocumento
     */
    public long getIdDocumento() {
        return idDocumento;
    }

    /**
     * @param idDocumento the idDocumento to set
     */
    public void setIdDocumento(long idDocumento) {
        this.idDocumento = idDocumento;
    }

    /**
     * @return the tipoDocumento
     */
    public TipoDocumento getTipoDocumento() {
        return tipoDocumento;
    }

    /**
     * @param tipoDocumento the tipoDocumento to set
     */
    public void setTipoDocumento(TipoDocumento tipoDocumento) {
        this.tipoDocumento = tipoDocumento;
    }

    /**
     * @return the idCliente
     */
    public Long getIdCliente() {
        return idCliente;
    }

    /**
     * @param idCliente the idCliente to set
     */
    public void setIdCliente(Long idCliente) {
        this.idCliente = idCliente;
    }

    /**
     * @return the idDepartamento
     */
    public Long getIdDepartamento() {
        return idDepartamento;
    }

    /**
     * @param idDepartamento the idDepartamento to set
     */
    public void setIdDepartamento(Long idDepartamento) {
        this.idDepartamento = idDepartamento;
    }

    /**
     * @return the idArea
     */
    public Long getIdArea() {
        return idArea;
    }

    /**
     * @param idArea the idArea to set
     */
    public void setIdArea(Long idArea) {
        this.idArea = idArea;
    }

    /**
     * @return the caja
     */
    public Caja getCaja() {
        return caja;
    }

    /**
     * @param caja the caja to set
     */
    public void setCaja(Caja caja) {
        this.caja = caja;
    }

    /**
     * @return the estado
     */
    public Estado getEstado() {
        return estado;
    }

    /**
     * @param estado the estado to set
     */
    public void setEstado(Estado estado) {
        this.estado = estado;
    }

    /**
     * @return the idUsuario
     */
    public long getIdUsuario() {
        return idUsuario;
    }

    /**
     * @param idUsuario the idUsuario to set
     */
    public void setIdUsuario(long idUsuario) {
        this.idUsuario = idUsuario;
    }

    /**
     * @return the fechaAlta
     */
    public Date getFechaAlta() {
        return fechaAlta;
    }

    /**
     * @param fechaAlta the fechaAlta to set
     */
    public void setFechaAlta(Date fechaAlta) {
        this.fechaAlta = fechaAlta;
    }

    /**
     * @return the token
     */
    public String getToken() {
        return token;
    }

    /**
     * @param token the token to set
     */
    public void setToken(String token) {
        this.token = token;
    }

    /**
     * @return the eliminado
     */
    public boolean isEliminado() {
        return eliminado;
    }

    /**
     * @param eliminado the eliminado to set
     */
    public void setEliminado(boolean eliminado) {
        this.eliminado = eliminado;
    }
    
}
